/*
 * @lc app=leetcode.cn id=27 lang=cpp
 *
 * [27] 移除元素
 */
#include <vector>
using namespace std;
// @lc code=start
class Solution
{
public:
    int removeElement(vector<int> &nums, int val)
    {
        // 双指针，快慢指针
        auto fast = nums.begin();
        auto slow = nums.begin();
        int count = 0;
        while (fast != nums.end())
        {
            if (*fast != val)
            {
                *slow = *fast;
                fast += 1;
                slow += 1;
                count += 1;
            }
            else
                fast += 1;
        }
        return count;
        
        // int j = nums.size() - 1;
        // for (int i = 0; i <= j; i++)
        // {
        //     if (nums[i] == val)
        //     {
        //         swap(nums[i--], nums[j--]);
        //     }
        // }
        // return j + 1;

    }
};
// @lc code=end
